/**
 * 小说相关类型定义
 */
import { FileHandle } from './fileSystem.ts';

/**
 * 项目类型枚举
 */
export enum ItemType {
    NOVEL = 'novel',    // 小说
    VOLUME = 'volume',  // 卷
    CHAPTER = 'chapter' // 章节
}

/**
 * 基础项目接口
 * 包含共享属性
 */
export interface BaseItem {
    id: string;         // 唯一标识
    name: string;       // 项目名称
    type: ItemType;     // 项目类型
    parentId?: string;  // 父项目ID（可选）
    fileHandle?: FileHandle;  // 文件系统关联（可选）
}

/**
 * 章节接口
 */
export interface Chapter extends BaseItem {
    type: ItemType.CHAPTER;
    content?: string;   // 章节内容（可选，可能被懒加载）
}

/**
 * 卷接口
 */
export interface Volume extends BaseItem {
    type: ItemType.VOLUME;
    children?: Chapter[];  // 子章节列表
}

/**
 * 小说接口
 */
export interface Novel extends BaseItem {
    type: ItemType.NOVEL;
    children?: Volume[];   // 子卷列表
    description?: string;  // 小说描述（可选）
    tags?: string[];       // 标签（可选）
    createdAt?: Date;      // 创建时间（可选）
    updatedAt?: Date;      // 更新时间（可选）
}

/**
 * 项目树节点类型
 * 可以是小说、卷或章节
 */
export type TreeItem = Novel | Volume | Chapter;

/**
 * 同步映射关系
 * 记录树形结构与文件系统的映射关系
 */
export interface SyncMapping {
    itemId: string;         // 项目ID
    fileHandleId: string;   // 文件句柄ID
    path?: string;          // 文件路径（可选，Tauri环境用）
    lastSynced: Date;       // 最后同步时间
} 